﻿using System;
using System.IO;
using System.Web.UI.WebControls;
using DataAccessObject;
using SharedLibraries;
using SharedLibraries.Constants;
using ThangNM_LIB.DB;
using ThangNM_LIB.FUNC;

namespace ThangNM.UserControl.Admin
{
    public partial class DatabaseUC : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Title_FormUC1.setTitle(ConstEx.Table_Name_C.Database, ConstEx.funcButtonToolBar.NA);
            MsgUC1.setClearMsg();

            if (!IsPostBack)
            {
                //if ((new ShareDAO.UserDAO()).SelectBy_sPermission(Session["secret"], Convert.ToString(Request.Url.AbsolutePath), ConstEx.funcButtonToolBar.MAIN) == false)
                //{
                //    pnlMain.Visible = false;
                //    Commons.setAccessDenied(Page, MsgUC1);
                //    return;
                //}
            }
            DanhSachFileDaBackup();
        }

        protected void btnBackup_Click(object sender, EventArgs e)
        {
            String DATABASE_NAME = System.Configuration.ConfigurationManager.AppSettings["DATABASE_NAME"];
            string path;
            if (radioSaveClient.Checked == false)
            {
                path = Server.MapPath("~/App_Data/" + DATABASE_NAME + "_" + Convert.ToString(DateTime.Now.ToString("ddMMyyyyHHmmss")) + ".bak");
            }
            else
            {
                path = txtPath.Text + DATABASE_NAME + "_" + Convert.ToString(DateTime.Now.ToString("ddMMyyyyHHmmss")) + ".bak";
            }

            if ((new DB_SQL_EXT()).Backup_Database(path))
            {
                DanhSachFileDaBackup();
                MsgUC1.setNotifications(ConstEx.FunctionSetMsg.SUCCESS, "Sao lưu dữ liệu thành công.");
            }
            else
            {
                MsgUC1.setNotifications(ConstEx.FunctionSetMsg.WARNING, "Sao lưu dữ liệu không thành công, Vui lòng kiểm tra lại.");
            }
        }

        protected void btnRestore_Click(object sender, EventArgs e)
        {
            string path = "";
            if ((new DB_SQL_EXT()).Restore_Database(path))
            {
                MsgUC1.setNotifications(ConstEx.FunctionSetMsg.SUCCESS, "Khôi phục dữ liệu thành công.");
            }
            else
            {
                MsgUC1.setNotifications(ConstEx.FunctionSetMsg.WARNING, "Khôi phục dữ liệu không thành công, Vui lòng kiểm tra lại.");
            }
        }

        private void DanhSachFileDaBackup()
        {
            string[] lstFile = Directory.GetFiles(Server.MapPath("~/App_Data/"), "*.bak");

            trvFileBackup.Nodes.Clear();
            foreach (string FileName in lstFile)
            {
                FileInfo fInfo = new FileInfo(FileName);

                TreeNode trNood = new TreeNode(fInfo.Name, fInfo.Name);
                trNood.NavigateUrl = "~/App_Data/" + trNood.Text;
                trvFileBackup.Nodes.Add(trNood);
            }
        }
    }
}